home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / wwbbs31_source.lha / WWBBS / RxSrc / filebase_action.c < prev    next >
C/C++ Source or Header  |  1994-10-15  |  4KB  |  147 lines

  1. #include <exec/types.h>
  2. #include <exec/exec.h>
  3. #include <libraries/wwbbs.h>
  4. #include <ctype.h>
  5. #include <math.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. #include <proto/dos.h>
  11. #include <proto/exec.h>
  12. #include <proto/rexxsyslib.h>
  13. #include <proto/wwbbs.h>
  14.  
  15. #include "rx.h"
  16.  
  17. #include "filebase.h"
  18.  
  19. void ViewArchive(BYTE *id)
  20.     {
  21.         if(strlen(file_area))
  22.             {
  23.                 if(file_current)
  24.                     {
  25.                         BYTE file[256];
  26.                         strcpy(file,"");
  27.                         if(GetConfigTags(CFGTAG_Path,file_path,CFGTAG_Name,file_area,FBTAG_Directory,file,TAG_END))
  28.                             {
  29.                                 APTR group;
  30.                                 if(group=OpenFileGroup(file_path,file_area,SHARED_LOCK))
  31.                                     {
  32.                                         BYTE *name=NULL;
  33.                                         if(GetFileTags(group,FILTAG_ID,file_current,FILTAG_Name,&name,TAG_END))
  34.                                             {
  35.                                                 AddPart(file,name,255);
  36.                                                 {
  37.                                                     BYTE *file_extension=NULL;
  38.                                                     file_extension=FilePart(file);
  39.                                                     {
  40.                                                         BYTE *p;
  41.                                                         p=file_extension;
  42.                                                         while(p=strchr(p,'.'))
  43.                                                             {
  44.                                                                 p++;
  45.                                                                 file_extension=p;
  46.                                                             }
  47.                                                     }
  48.                                                     {
  49.                                                         BYTE archiver[33];
  50.                                                         strcpy(archiver,"");
  51.                                                         {
  52.                                                             ULONG next=0;
  53.                                                             BYTE *arc_name=NULL,arc_extension[4];
  54.                                                             strcpy(arc_extension,"");
  55.                                                             while(next=GetConfigTags(CFGTAG_Path,"Archivers",CFGTAG_Name,&arc_name,CFGTAG_Next,next,ARCTAG_Extension,arc_extension,TAG_END))
  56.                                                                 {
  57.                                                                     if(!stricmp(arc_extension,file_extension))
  58.                                                                         strcpy(archiver,arc_name);
  59.                                                                 }
  60.                                                         }
  61.                                                         if(strlen(archiver))
  62.                                                             {
  63.                                                                 BYTE arc_viewcommand[512];
  64.                                                                 strcpy(arc_viewcommand,"");
  65.                                                                 if(GetConfigTags(CFGTAG_Path,"Archivers",CFGTAG_Name,archiver,ARCTAG_ViewCommand,arc_viewcommand,TAG_END))
  66.                                                                     {
  67.                                                                         BYTE cmd[256];
  68.                                                                         sprintf(cmd,arc_viewcommand,file);
  69.                                                                         printf("~r\n");
  70.                                                                         SetMode(Input(),0);
  71.                                                                         SystemTags(cmd,TAG_END);
  72.                                                                         SetMode(Input(),1);
  73.                                                                     }
  74.                                                             }
  75.                                                         else
  76.                                                             printf("~s\nUnknown archive format.\n");
  77.                                                     }
  78.                                                 }
  79.                                             }
  80.                                         CloseFileGroup(group);
  81.                                     }
  82.                             }
  83.                     }
  84.                 else
  85.                     printf("~s\nCurrent file does not exist.\n");
  86.             }
  87.         else
  88.             printf("~s\nPlease enter a file area first.\n");
  89.     }
  90.  
  91. void ReadTextFile(BYTE *id)
  92.     {
  93.         if(strlen(file_area))
  94.             {
  95.                 if(file_current)
  96.                     {
  97.                         BYTE file[256];
  98.                         strcpy(file,"");
  99.                         if(GetConfigTags(CFGTAG_Path,file_path,CFGTAG_Name,file_area,FBTAG_Directory,file,TAG_END))
  100.                             {
  101.                                 APTR group;
  102.                                 if(group=OpenFileGroup(file_path,file_area,SHARED_LOCK))
  103.                                     {
  104.                                         BYTE *name=NULL;
  105.                                         ULONG size=0;
  106.                                         if(GetFileTags(group,FILTAG_ID,file_current,FILTAG_Name,&name,FILTAG_Size,&size,TAG_END))
  107.                                             {
  108.                                                 AddPart(file,name,255);
  109.                                                 {
  110.                                                     BPTR fh;
  111.                                                     LONG c;
  112.                                                     BOOL ok=TRUE;
  113.                                                     int i;
  114.                                                     if(fh=Open(file,MODE_OLDFILE))
  115.                                                         {
  116.                                                             for(i=0;i<(size<1024) ? size : 1024;i++)
  117.                                                                 {
  118.                                                                     if((c=FGetC(fh))!=EOF)
  119.                                                                         {
  120.                                                                             if(c<0)
  121.                                                                                 {
  122.                                                                                     ok=FALSE;
  123.                                                                                     break;
  124.                                                                                 }
  125.                                                                         }
  126.                                                                     else
  127.                                                                         break;
  128.                                                                 }
  129.                                                             Close(fh);
  130.                                                         }
  131.                                                     if(ok)
  132.                                                         ShowText(file);
  133.                                                     else
  134.                                                         printf("~s\n`%s' is not a text file.\n",FilePart(file));
  135.                                                 }
  136.                                             }
  137.                                         CloseFileGroup(group);
  138.                                     }
  139.                             }
  140.                     }
  141.                 else
  142.                     printf("~s\nCurrent file does not exist.\n");
  143.             }
  144.         else
  145.             printf("~s\nPlease enter a file area first.\n");
  146.     }
  147.